package com.weavernorth.util;

import com.weavernorth.humanresource.HRDsjxAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.*;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * @Author: bruseewang
 * @Package: com.weavernorth.util
 * @date: 2020/6/11 16:19
 * @description:
 */
public class Logger4jUtil {
//    public static Log log = LogFactory.getLog(Logger4jUtil.class.getName());

    /***
     * 生成日志文件，但存在跨天日志不能写入到新一天日志文件的问题
     * @param urlPath
     * @return
     */
    public static Logger getLoggerByName(String urlPath) {
//        log.info("日志记录,路径参数："+urlPath);
        String localDate=new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime());
        String logFilePath="/usr/weaver/ecology/log";
        String filePath=logFilePath+urlPath+localDate+".log";
//        log.info("文件路径："+filePath);
        // 生成新的Logger
        // 如果已经有了一个Logger实例返回現有的
        Logger logger = Logger.getLogger(filePath);
        // 清空Appender。特別是不想使用現存实例时一定要初期化
        logger.removeAllAppenders();
        // 设定Logger级別。
        logger.setLevel(Level.DEBUG);
        // 设定是否继承父Logger。
        // 默认为true。继承root輸出。
        // 设定false后将不输出root。
        logger.setAdditivity(true);
        // 生成新的Appender
        RollingFileAppender appender=new RollingFileAppender();
//        DailyRollingFileAppender appender = new DailyRollingFileAppender();//每天产生一个日志文件
        PatternLayout layout = new PatternLayout();
        // log的输出形式
        //%c.%M:类名.方法名
        //%l:相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数
        String conversionPattern = "[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] [%c%M] %m%n";
        layout.setConversionPattern(conversionPattern);
        appender.setLayout(layout);
        appender.setFile(filePath);
        // log的文字码
        appender.setEncoding("UTF-8");
        //设置备份周期为每天
//        appender.setDatePattern("'.'yyyy-MM-dd");
        //设定log文件大小和备份数量
        appender.setMaxFileSize("10000MB");
        appender.setMaxBackupIndex(1);
        // true:在已存在log文件后面追加 false:新log覆盖以前的log
        appender.setAppend(true);
        // 适用当前配置
        appender.activateOptions();
        // 将新的Appender加到Logger中
        logger.addAppender(appender);
//        log.info("返回logger!");
        return logger;
    }

    /***
     * 生成日志文件
     * @param urlPath
     * @return
     */
    public Logger getLogger(String urlPath) {
//        log.info("日志记录,路径参数："+urlPath);
        String localDate=new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime());
        String logFilePath="/usr/weaver/ecology/log";
        String filePath=logFilePath+urlPath+localDate+".log";
//        log.info("文件路径："+filePath);
        // 生成新的Logger
        // 如果已经有了一个Logger实例返回現有的
        Logger logger = Logger.getLogger(filePath);
        // 清空Appender。特別是不想使用現存实例时一定要初期化
        logger.removeAllAppenders();
        // 设定Logger级別。
        logger.setLevel(Level.DEBUG);
        // 设定是否继承父Logger。
        // 默认为true。继承root輸出。
        // 设定false后将不输出root。
        logger.setAdditivity(true);
        // 生成新的Appender
        RollingFileAppender appender=new RollingFileAppender();
//        DailyRollingFileAppender appender = new DailyRollingFileAppender();//每天产生一个日志文件
        PatternLayout layout = new PatternLayout();
        // log的输出形式
        //%c.%M:类名.方法名
        //%l:相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数
        String conversionPattern = "[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] [%c%M] %m%n";
        layout.setConversionPattern(conversionPattern);
        appender.setLayout(layout);
        appender.setFile(filePath);
        // log的文字码
        appender.setEncoding("UTF-8");
        //设置备份周期为每天
//        appender.setDatePattern("'.'yyyy-MM-dd");
        //设定log文件大小和备份数量
        appender.setMaxFileSize("10000MB");
        appender.setMaxBackupIndex(1);
        // true:在已存在log文件后面追加 false:新log覆盖以前的log
        appender.setAppend(true);
        // 适用当前配置
        appender.activateOptions();
        // 将新的Appender加到Logger中
        logger.addAppender(appender);
//        log.info("返回logger!");
        return logger;
    }
}
